package com.fdd.op.sdk.model.dto;

import com.fdd.op.sdk.internal.mapping.RequestField;
import com.fdd.op.sdk.model.vo.VideoContentDTO;

import java.util.List;

/**
 * @description: 定制--适配快捷签签署方列表
 * @author lijiaxin@fadada.com
 * @date 2023/8/23 14:11
 */
public class PersonQuickSignInfoDTO {

    @RequestField(value = "签署人在当前系统的唯一识别标识，签署人在当前系统的唯一识别标识、在第三方业务系统的唯一标识不允许同时传入，只允许且必须传一个")
    private  String signerAccountId;

    @RequestField(value = "签署人在第三方业务系统的唯一标识，签署人在当前系统的唯一识别标识、在第三方业务系统的唯一标识不允许同时传入，只允许且必须传一个")
    private  String tpSignerAccountId;

    @RequestField(value = "页面跳转地址，\n" +
            "签署成功时：1、若不指定页面跳转地址，则显示签署状态（成功）页面；2、若指定页面跳转地址，则直接跳转到指定地址；\n" +
            "签署失败时：显示签署状态（失败）页面")
    private String returnUrl;

    @RequestField(value = "签署人姓名")
    private String signerName ;

    @RequestField(value = "签署人手机号")
    private String mobile ;

    @RequestField(value = "文档签署页面访问方式,0：不做访问限制（默认）；1：访问码；2：手机验证码")
    private String accessType ;

    @RequestField(value = "手机号区号，非必传，默认+86，传参时需带“+”号")
    private String areaCode ;

    @RequestField(value = "文档签署页面访问码，签署验证方式为访问码时必填，平台方自定义，填写了则需要填入访问码才能打开本接口返回的签署链接。适用于平台方业务系统自行向用户发送签署链接时使用。")
    private String accessCode;

    @RequestField(value = "签署人邮箱")
    private String email ;

    @RequestField(value = "页面终端适配方式client_page_type：0：自适应（默认）；1：PC；2：H5")
    private Integer clientPageType =0;

    @RequestField(value = "代表企业签时，企业在当前系统的唯一识别标识")
    private  String companyId;

    @RequestField(value = "代表企业签时，填写未注册的企业名称")
    private String companyName;

    @RequestField(value = "代表企业签时，企业在第三方业务系统的唯一标识")
    private  String tpOrgId;

    @RequestField(value = "签署优先级，签署优先级相同，表示为无序签，签署优先级不同表示顺序签。顺序签时，数值越大表示优先级越低。禁止在当前待签署节点及其之前签署节点插入待签署流程")
    private Integer priority;

    @RequestField(value = "代表企业签署时，签署要求：1：企业盖章（默认）；2：企业盖章+个人签名")
    private Integer signDemand = 1;

    private Integer isSendNotify;

    @RequestField(value = "签署类型，0：手动签署（默认）；1：系统免验证签；2：手动免验证签。")
    private Integer signType = 0;

    @RequestField(value = "签署方式，0：推送签署任务，1：获取合同签署连接")
    private Integer signMode = 0;

    @RequestField(value = "signType为1和2时发送签署通知，1:签署前后不通知(默认); 2:签署完成通知; 3:签署前通知; 4:签署前后都通知")
    private Integer autoSignNotifyType = 1;

    @RequestField(value = "是否指定签署位置,0：否（默认）；1：是")
    private Integer isPosition = 0;

    @RequestField(value = "意愿校验方式,0：短信验证（默认）；1：刷脸验证；2：签署方自行选择；5：互动视频签验证；6：密码验证，支持独立选择一种或多种，选择多种时用逗号分隔，签署方自行选择不支持组合使用")
    private String verifyMode = "0";

    @RequestField(value = "签署回调流水号，用于识别具体哪一次签署")
    private String notifyNo;

    @RequestField(value = "文件签署信息列表")
    private List<DocSignInfoDTO> docSignInfoDTO;

    @RequestField(value = "文件签署信息，当isPosition=0时使用，支持通过此参数指定当前签署人需要签署的文件，如有多个文件用‘,’隔开，指定的文件为自由签，没有指定的文件则不能签署；注意：没有指定任何文件则默认所有文件都需要签署。")
    private String freeSignDocIds;

    private Integer personSealType;

    private Integer urlTimeOut;

    @RequestField(value = "是否所有文件需阅读至末页才可提交，0：否 （默认）；1：是")
    private Integer isReadFinalPage = 0;

    @RequestField(value = "阅读多久后才可提交签署，默认为0，可设置秒数范围，1-60秒")
    private Float readingTime = 0f;

    @RequestField(value = "语言：en-US：English，zh-CN：简体中文（默认）")
    private String lang = "zh-CN";

    @RequestField(value = "证件号码")
    private String idCard;

    @RequestField(value = "0:非小程序（默认） 1:小程序")
    private Integer miniProgram = 0;

    @RequestField(value = "刷脸签署失败时跳转地址：1、若不指定页面跳转地址，显示签署状态（失败）页面；2、若指定页面跳转地址，则直接跳转到指定地址；")
    private String failUrl;

    @RequestField(value = "跳转失败url前，刷脸失败次数限制")
    private Integer redoNum;

    @RequestField(value = "自定义音视频双录内容")
    private List<VideoContentDTO> videoContentList;

    public List<VideoContentDTO> getVideoContentList() {
        return videoContentList;
    }

    public void setVideoContentList(List<VideoContentDTO> videoContentList) {
        this.videoContentList = videoContentList;
    }

    public String getFailUrl() {
        return failUrl;
    }

    public void setFailUrl(String failUrl) {
        this.failUrl = failUrl;
    }

    public Integer getRedoNum() {
        return redoNum;
    }

    public void setRedoNum(Integer redoNum) {
        this.redoNum = redoNum;
    }

    public String getSignerAccountId() {
        return signerAccountId;
    }

    public void setSignerAccountId(String signerAccountId) {
        this.signerAccountId = signerAccountId;
    }

    public String getTpSignerAccountId() {
        return tpSignerAccountId;
    }

    public void setTpSignerAccountId(String tpSignerAccountId) {
        this.tpSignerAccountId = tpSignerAccountId;
    }

    public String getReturnUrl() {
        return returnUrl;
    }

    public void setReturnUrl(String returnUrl) {
        this.returnUrl = returnUrl;
    }

    public String getSignerName() {
        return signerName;
    }

    public void setSignerName(String signerName) {
        this.signerName = signerName;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }

    public String getAccessType() {
        return accessType;
    }

    public void setAccessType(String accessType) {
        this.accessType = accessType;
    }

    public String getAreaCode() {
        return areaCode;
    }

    public void setAreaCode(String areaCode) {
        this.areaCode = areaCode;
    }

    public String getAccessCode() {
        return accessCode;
    }

    public void setAccessCode(String accessCode) {
        this.accessCode = accessCode;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getClientPageType() {
        return clientPageType;
    }

    public void setClientPageType(Integer clientPageType) {
        this.clientPageType = clientPageType;
    }

    public String getCompanyId() {
        return companyId;
    }

    public void setCompanyId(String companyId) {
        this.companyId = companyId;
    }

    public String getCompanyName() {
        return companyName;
    }

    public void setCompanyName(String companyName) {
        this.companyName = companyName;
    }

    public String getTpOrgId() {
        return tpOrgId;
    }

    public void setTpOrgId(String tpOrgId) {
        this.tpOrgId = tpOrgId;
    }

    public Integer getPriority() {
        return priority;
    }

    public void setPriority(Integer priority) {
        this.priority = priority;
    }

    public Integer getSignDemand() {
        return signDemand;
    }

    public void setSignDemand(Integer signDemand) {
        this.signDemand = signDemand;
    }

    public Integer getIsSendNotify() {
        return isSendNotify;
    }

    public void setIsSendNotify(Integer isSendNotify) {
        this.isSendNotify = isSendNotify;
    }

    public Integer getSignType() {
        return signType;
    }

    public void setSignType(Integer signType) {
        this.signType = signType;
    }

    public Integer getSignMode() {
        return signMode;
    }

    public void setSignMode(Integer signMode) {
        this.signMode = signMode;
    }

    public Integer getAutoSignNotifyType() {
        return autoSignNotifyType;
    }

    public void setAutoSignNotifyType(Integer autoSignNotifyType) {
        this.autoSignNotifyType = autoSignNotifyType;
    }

    public Integer getIsPosition() {
        return isPosition;
    }

    public void setIsPosition(Integer isPosition) {
        this.isPosition = isPosition;
    }

    public String getVerifyMode() {
        return verifyMode;
    }

    public void setVerifyMode(String verifyMode) {
        this.verifyMode = verifyMode;
    }

    public String getNotifyNo() {
        return notifyNo;
    }

    public void setNotifyNo(String notifyNo) {
        this.notifyNo = notifyNo;
    }

    public List<DocSignInfoDTO> getDocSignInfoDTO() {
        return docSignInfoDTO;
    }

    public void setDocSignInfoDTO(List<DocSignInfoDTO> docSignInfoDTO) {
        this.docSignInfoDTO = docSignInfoDTO;
    }

    public String getFreeSignDocIds() {
        return freeSignDocIds;
    }

    public void setFreeSignDocIds(String freeSignDocIds) {
        this.freeSignDocIds = freeSignDocIds;
    }

    public Integer getPersonSealType() {
        return personSealType;
    }

    public void setPersonSealType(Integer personSealType) {
        this.personSealType = personSealType;
    }

    public Integer getUrlTimeOut() {
        return urlTimeOut;
    }

    public void setUrlTimeOut(Integer urlTimeOut) {
        this.urlTimeOut = urlTimeOut;
    }

    public Integer getIsReadFinalPage() {
        return isReadFinalPage;
    }

    public void setIsReadFinalPage(Integer isReadFinalPage) {
        this.isReadFinalPage = isReadFinalPage;
    }

    public Float getReadingTime() {
        return readingTime;
    }

    public void setReadingTime(Float readingTime) {
        this.readingTime = readingTime;
    }

    public String getLang() {
        return lang;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    public String getIdCard() {
        return idCard;
    }

    public void setIdCard(String idCard) {
        this.idCard = idCard;
    }

    public Integer getMiniProgram() {
        return miniProgram;
    }

    public void setMiniProgram(Integer miniProgram) {
        this.miniProgram = miniProgram;
    }
}
